rust: introduce `RUST_{HOST,PKG}_LOCKED` flag
authorTianling Shen <[email protected]>
Wed, 20 Aug 2025 09:28:22 +0000 (17:28 +0800)
committerTianling Shen <[email protected]>
Thu, 21 Aug 2025 09:00:09 +0000 (17:00 +0800)
Introduce `RUST_{HOST,PKG}_LOCKED` flag (enabled by default) to respect
upstream lockfile. This can be disabled by setting it to 0 if you want
to have up-to-date dependencies.

This change also adds new `CARGO_{HOST,PKG}_ARGS` variable to pass extra
build arguments to cargo.

Signed-off-by: Tianling Shen <[email protected]>
lang/rust/rust-host-build.mk
lang/rust/rust-package.mk

index e5629293760b57ed0ee2ec5d58b12575aeeca646..35f8fbe0ddba6388133843b3ad57e1ea4127316d 100644 (file)
@@ -9,17 +9,33 @@
 #   Space or comma separated list of features to activate
 #
 #   e.g. RUST_HOST_FEATURES:=enable-foo,with-bar
+#
+#
+# RUST_HOST_LOCKED - Assert that `Cargo.lock` will remain unchanged
+#                    (Enabled by default)
+#
+#   Disable it if you want to have up-to-date dependencies
+#
+#   e.g. RUST_HOST_LOCKED:=0
 
 ifeq ($(origin RUST_INCLUDE_DIR),undefined)
   RUST_INCLUDE_DIR:=$(dir $(lastword $(MAKEFILE_LIST)))
 endif
 include $(RUST_INCLUDE_DIR)/rust-values.mk
 
+RUST_HOST_LOCKED ?= 1
+
 CARGO_HOST_VARS= \
        $(CARGO_HOST_CONFIG_VARS) \
        CC=$(HOSTCC_NOCACHE) \
        MAKEFLAGS="$(HOST_JOBS)"
 
+CARGO_HOST_ARGS=
+
+ifeq ($(strip $(RUST_HOST_LOCKED)),1)
+  CARGO_HOST_ARGS+= --locked
+endif
+
 # $(1) path to the package (optional)
 # $(2) additional arguments to cargo (optional)
 define Host/Compile/Cargo
@@ -30,6 +46,7 @@ define Host/Compile/Cargo
                --root $(HOST_INSTALL_DIR) \
                --path "$(HOST_BUILD_DIR)/$(if $(strip $(1)),$(strip $(1)))" \
                $(if $(filter --jobserver%,$(HOST_JOBS)),,-j1) \
+               $(CARGO_HOST_ARGS) \
                $(2)
 endef
 
index 24341d7063f20cc5fda33b858eadb7a7bb49d170..18370bc35bafd27488b00b8f6e56a8302c169d43 100644 (file)
@@ -9,17 +9,34 @@
 #   Space or comma separated list of features to activate
 #
 #   e.g. RUST_PKG_FEATURES:=enable-foo,with-bar
+#
+#
+# RUST_PKG_LOCKED - Assert that `Cargo.lock` will remain unchanged
+#                   (Enabled by default)
+#
+#   Disable it if you want to have up-to-date dependencies
+#
+#   e.g. RUST_PKG_LOCKED:=0
+
 
 ifeq ($(origin RUST_INCLUDE_DIR),undefined)
   RUST_INCLUDE_DIR:=$(dir $(lastword $(MAKEFILE_LIST)))
 endif
 include $(RUST_INCLUDE_DIR)/rust-values.mk
 
+RUST_PKG_LOCKED ?= 1
+
 CARGO_PKG_VARS= \
        $(CARGO_PKG_CONFIG_VARS) \
        CC=$(HOSTCC_NOCACHE) \
        MAKEFLAGS="$(PKG_JOBS)"
 
+CARGO_PKG_ARGS=
+
+ifeq ($(strip $(RUST_PKG_LOCKED)),1)
+  CARGO_PKG_ARGS+= --locked
+endif
+
 # $(1) path to the package (optional)
 # $(2) additional arguments to cargo (optional)
 define Build/Compile/Cargo
@@ -30,6 +47,7 @@ define Build/Compile/Cargo
                --root $(PKG_INSTALL_DIR) \
                --path "$(PKG_BUILD_DIR)/$(if $(strip $(1)),$(strip $(1)))" \
                $(if $(filter --jobserver%,$(PKG_JOBS)),,-j1) \
+               $(CARGO_PKG_ARGS) \
                $(2)
 endef